﻿Public Class Ciudades

    Private oMaestra As New CMaestras
    Private dtCiudad As New DataTable
    Private dtPais As New DataTable
    Private idCiudad As Integer
    Private idPais As Integer

    Private Sub Ciudades_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CargarGrillas()
    End Sub

    Private Sub CargarGrillas()
        Try
            Dim ds As New DataSet
            ds = Me.oMaestra.GetCiudades()
            Me.dtCiudad = ds.Tables(0).Copy
            Me.dtPais = ds.Tables(1).Copy

            'Llena grilla de las ciudades
            If (Me.dtCiudad.Rows.Count > 0) Then
                Me.grdCiudad.DataSource = Nothing
                Me.grdCiudad.Columns.Clear()
                Me.grdCiudad.DataSource = Me.dtCiudad

                Dim iconoEDITAR As New DataGridViewImageColumn()
                iconoEDITAR.ValuesAreIcons = False
                iconoEDITAR.Image = My.Resources.editar
                iconoEDITAR.HeaderText = "EDITAR"
                iconoEDITAR.Name = "EDITAR"
                Me.grdCiudad.Columns.Add(iconoEDITAR)

                Dim iconoELIMINAR As New DataGridViewImageColumn()
                iconoELIMINAR.ValuesAreIcons = False
                iconoELIMINAR.Image = My.Resources.eliminar
                iconoELIMINAR.HeaderText = "ELIMINAR"
                iconoELIMINAR.Name = "ELIMINAR"
                Me.grdCiudad.Columns.Add(iconoELIMINAR)

                Me.grdCiudad.Columns("ID").Visible = False
                Me.grdCiudad.Columns("IDPAIS").Visible = False
                Me.grdCiudad.Columns("EDITAR").Width = 60
                Me.grdCiudad.Columns("ELIMINAR").Width = 70
            Else
                Me.grdCiudad.DataSource = Nothing
                Me.grdCiudad.Columns.Clear()
                MessageBox.Show("No existen ciudades", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If

            'Llena grilla de los paises
            If (Me.dtPais.Rows.Count > 0) Then
                Me.grdPais.DataSource = Nothing
                Me.grdPais.Columns.Clear()
                Me.grdPais.DataSource = Me.dtPais

                Dim iconoEDITAR As New DataGridViewImageColumn()
                iconoEDITAR.ValuesAreIcons = False
                iconoEDITAR.Image = My.Resources.editar
                iconoEDITAR.HeaderText = "EDITAR"
                iconoEDITAR.Name = "EDITAR"
                Me.grdPais.Columns.Add(iconoEDITAR)

                Dim iconoELIMINAR As New DataGridViewImageColumn()
                iconoELIMINAR.ValuesAreIcons = False
                iconoELIMINAR.Image = My.Resources.eliminar
                iconoELIMINAR.HeaderText = "ELIMINAR"
                iconoELIMINAR.Name = "ELIMINAR"
                Me.grdPais.Columns.Add(iconoELIMINAR)

                Me.grdPais.Columns("ID").Visible = False
                Me.grdPais.Columns("EDITAR").Width = 60
                Me.grdPais.Columns("ELIMINAR").Width = 70

                'Llena el combo de los paises
                Dim dt As DataTable = Me.dtPais.Copy()
                Me.drpPais.DataSource = CUtil.AgregarRegistro(dt, "Seleccione...")
                Me.drpPais.ValueMember = dt.Columns(0).ColumnName
                Me.drpPais.DisplayMember = dt.Columns(1).ColumnName

            Else
                Me.grdPais.DataSource = Nothing
                Me.grdPais.Columns.Clear()
                MessageBox.Show("No existen países", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If

        Catch ex As Exception
            MessageBox.Show("Ocurrió un error al cargar las ciudades y países: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    Private Sub ELIMINARCiudad(ByVal id As Integer)
        Try
            If (MessageBox.Show("¿Realmente desea eliminar esta ciudad?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then
                Cursor = Cursors.WaitCursor
                Me.oMaestra.Eliminar(id, CMaestras.Tabla.Ciudad)
                MessageBox.Show("La ciudad ha sido eliminada", "Ciudad eliminada", MessageBoxButtons.OK, MessageBoxIcon.Information)

                Cursor = Cursors.Default
            End If
        Catch ex As Exception
            Cursor = Cursors.Default
            MessageBox.Show("NO se eliminó la ciudad: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
        Me.CargarGrillas()
    End Sub

    Private Sub ELIMINARPais(ByVal id As Integer)
        Try
            If (MessageBox.Show("¿Realmente desea eliminar este país?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then
                Cursor = Cursors.WaitCursor
                Me.oMaestra.Eliminar(id, CMaestras.Tabla.Pais)
                MessageBox.Show("El país ha sido eliminado", "Paìs eliminado", MessageBoxButtons.OK, MessageBoxIcon.Information)

                Cursor = Cursors.Default
            End If
        Catch ex As Exception
            Cursor = Cursors.Default
            MessageBox.Show("NO se eliminó el país: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
        Me.CargarGrillas()
    End Sub

    Private Sub btnCancelarCiudad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelarCiudad.Click
        Me.idCiudad = 0
        Me.txtNombreCiudad.Text = ""
        Me.txtAbreviaturaCiudad.Text = ""
        Me.drpPais.SelectedValue = "0"
    End Sub

    Private Sub btnCancelarPais_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelarPais.Click
        Me.idPais = 0
        Me.txtNombrePais.Text = ""
        Me.txtAbreviaturaPais.Text = ""
    End Sub

    Private Sub btnListoCiudad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListoCiudad.Click
        If (Me.ValidarCiudad()) Then
            Try
                Cursor = Cursors.WaitCursor

                Dim result As String = Me.oMaestra.ActualizarCiudad(Me.idCiudad, Me.txtNombreCiudad.Text, CInt(Me.drpPais.SelectedValue), Me.txtAbreviaturaCiudad.Text)

                'Si hay algun formulario abierto con combo de ciudades, recarga el combo
                If (My.Forms.Clientes.Visible) Then
                    My.Forms.Clientes.CargarCiudades()
                End If
                If (My.Forms.Consolidados.Visible) Then
                    My.Forms.Consolidados.CargarCiudades()
                End If
                If (My.Forms.AereoExportacion.Visible) Then
                    My.Forms.AereoExportacion.CargarCiudades()
                End If
                If (My.Forms.Maritimos.Visible) Then
                    My.Forms.Maritimos.CargarCiudades()
                End If
                If (My.Forms.Terceros.Visible) Then
                    My.Forms.Terceros.CargarCiudades()
                End If
                If (My.Forms.Guias.Visible) Then
                    My.Forms.Guias.CargarCiudades()
                End If

                Cursor = Cursors.Default

                MessageBox.Show(result, "Ciudad", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As Exception
                Cursor = Cursors.Default
                MessageBox.Show("Ocurrió un error al guardar la ciudad: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try

            Me.idCiudad = 0
            Me.txtNombreCiudad.Text = ""
            Me.txtAbreviaturaCiudad.Text = ""
            Me.drpPais.SelectedValue = "0"
            Me.CargarGrillas()
        End If
    End Sub

    Private Sub btnListoPais_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListoPais.Click
        If (Me.ValidarPais()) Then
            Try
                Cursor = Cursors.WaitCursor

                Dim result As String = Me.oMaestra.ActualizarPais(Me.idPais, Me.txtNombrePais.Text, Me.txtAbreviaturaPais.Text)
                Cursor = Cursors.Default

                MessageBox.Show(result, "País", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As Exception
                Cursor = Cursors.Default
                MessageBox.Show("Ocurrió un error al guardar el país: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try

            Me.idPais = 0
            Me.txtNombrePais.Text = ""
            Me.txtAbreviaturaPais.Text = ""
            Me.CargarGrillas()
        End If
    End Sub

    Private Function ValidarCiudad() As Boolean
        Dim mensaje As String = ""

        If (Trim(Me.txtNombreCiudad.Text).Length = 0) Then
            mensaje += "- Debe escribir el nombre de la ciudad" & Chr(13)
        End If
        If (Trim(Me.txtAbreviaturaCiudad.Text).Length = 0) Then
            mensaje += "- Debe escribir la abreviatura de la ciudad" & Chr(13)
        End If
        If (Me.drpPais.SelectedValue = "0") Then
            mensaje += "- Debe seleccionar el país" & Chr(13)
        End If
        If (mensaje.Length > 0) Then
            MessageBox.Show(mensaje, "Datos incompletos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Return False
        Else
            Return True
        End If
    End Function

    Private Function ValidarPais() As Boolean
        Dim mensaje As String = ""

        If (Trim(Me.txtNombrePais.Text).Length = 0) Then
            mensaje += "- Debe escribir el nombre del país" & Chr(13)
        End If
        If (Trim(Me.txtAbreviaturaPais.Text).Length = 0) Then
            mensaje += "- Debe escribir la abreviatura del país" & Chr(13)
        End If
        If (mensaje.Length > 0) Then
            MessageBox.Show(mensaje, "Datos incompletos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Return False
        Else
            Return True
        End If
    End Function


#Region "Eventos de la grilla"

    Private Sub grdCiudad_CellMouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdCiudad.CellMouseEnter
        '*** Coloca la manito cuando el mouse entra en las celdas de EDITAR y ELIMINAR
        If (Me.grdCiudad.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdCiudad.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If
    End Sub

    Private Sub grdPais_CellMouseEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdPais.CellMouseEnter
        '*** Coloca la manito cuando el mouse entra en las celdas de EDITAR y ELIMINAR
        If (Me.grdPais.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdPais.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If
    End Sub

    Private Sub grdCiudad_CellMouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grdCiudad.CellMouseMove
        If (Me.grdCiudad.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdCiudad.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If
    End Sub

    Private Sub grdPais_CellMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grdPais.CellMouseMove
        If (Me.grdPais.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdPais.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If
    End Sub

    Private Sub grdCiudad_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdCiudad.CellDoubleClick
        '*** Permite EDITAR o ELIMINAR
        'Se obtiene la info del registro
        Dim id As Integer = Me.grdCiudad.Rows(e.RowIndex).Cells("ID").Value
        Dim ciudad As String = Me.grdCiudad.Rows(e.RowIndex).Cells("CIUDAD").Value        
        Dim idPais As Integer = Me.grdCiudad.Rows(e.RowIndex).Cells("IDPAIS").Value
        Dim abreviatura As String = Me.grdCiudad.Rows(e.RowIndex).Cells("ABREVIATURA").Value

        Select Case Me.grdCiudad.Columns(e.ColumnIndex).Name
            Case "EDITAR"
                Me.idCiudad = id
                Me.txtNombreCiudad.Text = ciudad
                Me.drpPais.SelectedValue = idPais
                Me.txtAbreviaturaCiudad.Text = abreviatura
            Case "ELIMINAR"
                Me.EliminarCiudad(id)
        End Select
    End Sub

    Private Sub grdPais_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdPais.CellDoubleClick
        '*** Permite EDITAR o ELIMINAR
        'Se obtiene la info del registro
        Dim id As Integer = Me.grdPais.Rows(e.RowIndex).Cells("ID").Value
        Dim pais As String = Me.grdPais.Rows(e.RowIndex).Cells("PAIS").Value
        Dim abreviatura As String = Me.grdPais.Rows(e.RowIndex).Cells("ABREVIATURA").Value

        Select Case Me.grdPais.Columns(e.ColumnIndex).Name
            Case "EDITAR"
                Me.idPais = id
                Me.txtNombrePais.Text = pais
                Me.txtAbreviaturaPais.Text = abreviatura
            Case "ELIMINAR"
                Me.EliminarPais(id)
        End Select
    End Sub
#End Region





End Class